<?php
class FileContainerDAO implements IDAO
{
	function __construct()
	{
	}

	/**
	 * Persiste un archivo.
	 * @param Archivo $archivo El archivo a persistir.
	 */
	function persist($archivo)
	{
		$db = DBManager::getConnection();

		$id = $archivo->getId();
		$nombre = $archivo->getNombre();
		$extension = $archivo->getExtension();
		$idPadre = $archivo->getPadre()->getId();
		$contenido = $archivo->getContenido();
		try
		{
			$db->query("INSERT INTO ARCHIVOS $id, $nombre, $extension, $idPadre, $contenido");
		} catch (Exception $e) {
			throw new Exception("Ocurrió una excepción nivel de BBDD. Estás intentando persistir un archivo sin usar el PersistenceController?");
		}

		$db->closeConnection();
	}

	/**
	 * Encuentra un archivo.
	 * Utilizar ésta búsqueda para consultas de tiempo crítico.
	 * (No es lo mismo subir todos los archivos a memoria y buscar, que consultar directo a la base).
	 * @param NodoVFS $padre Una referencia al nodo del Virtual File System que contiene al archivo.
	 * @param string $nombre El nombre del archivo.
	 * @param string $extension La extensi�n del archivo.
	 */
	function find($padre, $nombre, $extension)
	{
		$db = DBManager::getConnection();
		
		$padre->getId();
		$result = $db->fetchAll(
			"SELECT * FROM ARCHIVOS WHERE
			ARCHIVO_NOMBRE = '$nombre' AND
			ARCHIVO_EXTENSION = '$extension' AND
			NODO_VFS_FK = $idPadre");
		//TODO: Armar el contenedor de archivo y devolverlo como tal.
		
		$db->closeConnection();
		//return $archivo;
	}
}